iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
自我挑戰組

PHP框架-Laravel自學挑戰系列 第 26

DAY 26 - resume builder: 將resume更新至GitHub README (上)

  • 分享至 

  • xImage
  •  

哈囉大家好!
昨天想了很久要做的新功能,突然想到登入功能做了GitHub的OAuth,所以想要趁機玩玩看GitHub的API。
這個功能也會分成上下部分,今天主要會說明如何實現這個功能,以及需要做什麼權限設定開可以讓使用者順利更新README profile。
那就開始吧!

在GitHub登入後的個人首頁,若有一個repo的名稱(repo必須設置public)和使用者的GitHub名稱一樣並且有添加README.md的話,主頁會顯示預設的自我介紹介面如下:
https://ithelp.ithome.com.tw/upload/images/20240926/20168986wEcJSmKDdo.png

我想要實現的功能為「在該筆resume預覽頁面新增"更新README"按鈕,當使用者按下按鈕後,就會更新resume的內容到README.md」。

首先使用者必須確保他們在GitHub帳戶已經有一個public repo並且已經存在README.md(因為預計會利用PUT Request來更新資料)。
想要讓使用者可以透過resume builder來更新GitHub內容的話,在發送請求時必須附上OAuth Tokens。
當使用者透過GitHub OAuth登入後,就會獲得一個OAuth Token,就可以發送GitHub API請求,例如讀取repos, 編輯內容⋯⋯等。

因為要更新原本README.md裡面的內容,所以必須進行權限設定,針對repo的scope進行設定,確保resume builder有代表使用者修改他們GitHub content的資格。

具體步驟如下:

  1. 設定GitHub OAuth 登入功能(已完成)
  2. 使用者登入時,要求特定的scopes(例如:repo)
  3. 將獲得的OAuth Token儲存,發送GitHub API請求時會用到

接下來就到GitHub官方API文檔閱讀如何發送請求:
(這裡我用的是「創建或上傳檔案」)

官方文檔還蠻貼心的,有給三種發送請求格式的範例,也有說明哪些參數是必須的(例如路徑中一定要包含owner, repo, path,body則是要有message和content)
所以大致上發送的API URL會長這樣:https://api.github.com/repos/OWNER/REPO/contents/PATH

因為我想要更新的是README.md,所以PATH這邊會換成README.md,OWNER和REPO則會替換成使用者的GitHub名稱。

透過$githubUser獲得OAuth Token:

$githubUser = Socialite::driver($provider)->user();
$token = $githubUser->token;

那今天對於新功能的說明就簡單到這裡!
明天要來實現功能(今天花很多時間在看文檔,目前撰寫程式碼測試也都沒有成功,看來我還要花時間debug一下/images/emoticon/emoticon06.gif
那就明天見啦 byebye!


上一篇
DAY 25 - resume builder: 刪除單筆指定的resume功能
下一篇
DAY 27 - resume builder: 將resume更新至GitHub README (中)OAuth Token and Scope
系列文
PHP框架-Laravel自學挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言